﻿//////////////////////////////////////////////////////////////////////////////
//
//  Copyright © 1998-2024 Glodon Company Limited.  All rights reserved.
//
//  Use of this software is subject to the terms of the Glodon license
//  agreement provided at the time of installation or download, or which
//  otherwise accompanies this software in either electronic or hard copy form.  
//
//////////////////////////////////////////////////////////////////////////////


#pragma once

#include "GcmpDwgDxfInterface.h"
#include <stdint.h>

namespace gcmp
{

    /// \brief 表示一个element在导出DWG时的导出方式的接口。
    /// 
    FINAL_INTERFACE class GCMP_DWG_DXF_INTERFACE_EXPORT IElementExportMethod
    {
    public:
        IElementExportMethod();
        virtual ~IElementExportMethod();

        /// \brief 由用户设置一个element是否需要导出。
        /// 
        /// \param shouldExport 是否需要导出。true表示需要导出；false表示不需要导出。缺省是需要导出。
        /// \return 返回true表示设置成功；返回false表示设置失败。
        virtual bool SetShouldExport(bool shouldExport) = 0;

        /// \brief 由用户设置一个element是否完全由用户导出。
        /// 
        /// \param exportByCustomizedMethod 是否完全由用户导出。true表示完全由用户导出；false表示由GCMP导出。缺省是由GCMP导出。
        /// \return 返回true表示设置成功；返回false表示设置失败。
        virtual bool SetExportByCustomizedMethod(bool exportByCustomizedMethod) = 0;

        /// \brief 由用户设置一个element是否按block导出。
        /// 
        /// \param asBlock 是否按block导出。true表示按block导出；false表示按entity导出。缺省是按entity导出。
        /// \return 返回true表示设置成功；返回false表示设置失败。
        virtual bool SetExportAsBlock(bool asBlock) = 0;

        /// \brief 由用户设置一个标注的element是否用户自定义导出
        /// 
        /// \param exportDimByCustomized 是否按用户自定义导出。true表示按自定义导出；false表示不按自定义导出。缺省是按非自定义导出。
        /// \return 返回true表示设置成功；返回false表示设置失败
        virtual bool SetExportDimensionByCustomized(bool exportDimByCustomized) = 0;

    };

}
